page.tsx 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. "use client";
  2. import { ChildItem, getPromoteList } from "@/api/activity";
  3. import { formatAmount } from "@/utils";
  4. import { Button, DotLoading, InfiniteScroll, Input, List } from "antd-mobile";
  5. import clsx from "clsx";
  6. import dayjs from "dayjs";
  7. import React, { useState } from "react";
  8. import styles from "./page.module.scss";
  9. const InfiniteScrollContent = ({ hasMore }: { hasMore?: boolean }) => {
  10. return (
  11. <>
  12. {hasMore ? (
  13. <>
  14. <span>Loading</span>
  15. <DotLoading />
  16. </>
  17. ) : (
  18. <span>Não mais</span>
  19. )}
  20. </>
  21. );
  22. };
  23. const Detail = () => {
  24. const [data, setData] = useState<ChildItem[]>([]);
  25. const [hasMore, setHasMore] = useState(false);
  26. async function loadMore() {
  27. getData();
  28. // setHasMore(true);
  29. }
  30. React.useEffect(() => {
  31. getData();
  32. }, []);
  33. const getData = async () => {
  34. const res = await getPromoteList();
  35. if (res.code === 200) {
  36. setData(res.data);
  37. }
  38. };
  39. return (
  40. <div className={styles.detail}>
  41. <div className={clsx("m-[.15rem] flex items-center", styles.searchbox)}>
  42. <Input placeholder="Por favor, insira o ID"></Input>
  43. <div className="ml-[.1rem]">
  44. <Button size="middle">
  45. <i className="iconfont icon-sousuo2"></i>
  46. </Button>
  47. </div>
  48. </div>
  49. <div className={styles.container}>
  50. <div className={clsx(styles.item)}>
  51. <div>Tempo</div>
  52. <div>
  53. ID do <br /> membro
  54. </div>
  55. <div>Valor do depósito</div>
  56. <div>Número de depósitos</div>
  57. <div>
  58. Apostas <br /> Válidas
  59. </div>
  60. </div>
  61. <List>
  62. {data.map((item, index) => (
  63. <List.Item key={index}>
  64. <div className={clsx(styles.item)}>
  65. <div>
  66. {dayjs(item.create_at * 1000).format("YYYY-MM-DD HH:mm:ss")}
  67. </div>
  68. <div>{item.renter_uid}</div>
  69. <div className="text-[#309a1f_!important]">
  70. {formatAmount(item.deposit)}R$
  71. </div>
  72. <div>{item.deposit_time}</div>
  73. <div>{item.total_bet}</div>
  74. </div>
  75. </List.Item>
  76. ))}
  77. </List>
  78. <InfiniteScroll loadMore={loadMore} hasMore={hasMore}>
  79. <InfiniteScrollContent hasMore={hasMore} />
  80. </InfiniteScroll>
  81. </div>
  82. </div>
  83. );
  84. };
  85. export default Detail;